﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;

namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestTipoDocumentoDAO
    {
        private Tipo_DocumentoDAO tipo_DocumentoDAO = new Tipo_DocumentoDAO();
       
        [Test]
        public void TestCrear()
        {

            // 1. Instanciando el objeto TO         
            Tipo_Documento nuevoTipo_Documento = new Tipo_Documento();

            nuevoTipo_Documento.Codigo_Tipo_Documento = 1;
            nuevoTipo_Documento.Descripcion = "DNI";
            nuevoTipo_Documento.Estado = "Activo";
            // 2. Llamada al método del DAO a probar
            Tipo_Documento Tipo_DocumentoCreado = tipo_DocumentoDAO.Crear(nuevoTipo_Documento);
            // 4. Implementar las validaciones
            Assert.NotNull(Tipo_DocumentoCreado);
            Assert.AreEqual(nuevoTipo_Documento.Codigo_Tipo_Documento, Tipo_DocumentoCreado.Codigo_Tipo_Documento);
            Assert.NotNull(Tipo_DocumentoCreado.Descripcion);

        }
        [Test]
        public void TestObtener()
        {
            int _cod_Tipo_Documento;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_Tipo_Documento = 1;
            Tipo_Documento Tipo_DocumentoConsulta = tipo_DocumentoDAO.Obtener(_cod_Tipo_Documento);           
            
            // 4. Implementar las validaciones
            Assert.NotNull(Tipo_DocumentoConsulta);
            Assert.AreEqual(Tipo_DocumentoConsulta.Codigo_Tipo_Documento, _cod_Tipo_Documento);
            Assert.IsNotNull(Tipo_DocumentoConsulta.Descripcion);

        }

        [Test]
        public void TestModificar()
        {

            // 1. Instanciando el objeto TO
            Tipo_Documento oTipo_Documento = new Tipo_Documento();

            oTipo_Documento.Codigo_Tipo_Documento = 1;
            oTipo_Documento.Descripcion = "Pasaporte";
            oTipo_Documento.Estado = "Activo";
            
            // 2. Llamada al método del DAO a probar
            Tipo_Documento Tipo_DocumentoModificado = tipo_DocumentoDAO.Modificar(oTipo_Documento);
            // 4. Implementar las validaciones
            Assert.NotNull(Tipo_DocumentoModificado);
            Assert.AreEqual(Tipo_DocumentoModificado.Descripcion, oTipo_Documento.Descripcion);
            Assert.IsNotNull(Tipo_DocumentoModificado.Descripcion);
        }

        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Tipo_Documento oTipo_Documento = new Tipo_Documento();
            oTipo_Documento.Codigo_Tipo_Documento = 1;
            // 2. Llamada al método del DAO a probar
            tipo_DocumentoDAO.Eliminar(oTipo_Documento);
            Tipo_Documento Tipo_DocumentoConsulta = tipo_DocumentoDAO.Obtener(oTipo_Documento.Codigo_Tipo_Documento);
            Assert.IsNull(Tipo_DocumentoConsulta);
          
        }

        [Test]
        public void TestListarTipoDocumentoPorDescripcion()
        {
            string descripcion = "URB";
            ICollection<Tipo_Documento> LTipoDocumento = tipo_DocumentoDAO.ListarTipoDocumentoPorDescripcion(descripcion);
            Assert.NotNull(LTipoDocumento);
            Assert.Greater(LTipoDocumento.Count, 0);
        }

    }
}